// 角色添加js（demo）
//author：胡冰  2009-09-15
var SPLIT_CHAR_1 = "-"; //ID与name间的分隔符，如001-角色组1
var SPLIT_CHAR_2 = "—"; //name与日期间的分隔符，如001-角色组1—启用日期 2008-09-01
var SPLIT_CHAR_VALUE = "*"; //下拉框中ID与日期的分隔符

//获取对象的公共方法
function oo(obj) {
	var body = document.body, agent = navigator.userAgent;
	var isIE, isIE4, isIE5, isIE6, isOpr, isMoz, isIE5_5;
	return typeof (obj) != "string" ? obj : (isIE5 ? document.all(obj)
			: document.getElementById(obj));
}

/**关闭弹出层  并修改选择的功能
 传入参数 
 target 要过滤的select对象
 selected 已选择的select对象
 light 隐藏的弹出层对象
 fade 隐藏的div对象
 ifOnCheck 功能是否启用checkbox对象
 date 启用日期对象
 start_date 启用时间的div name
 **/
function update_fuction(selected, light, fade, ifOnCheck, date_edit, start_date) {
	if (ifOnCheck.checked == true) {
		if (date_edit.value == '') {
			alert("请填写启用日期");
			return false;
		}
	}

	editOption(selected, ifOnCheck, date_edit.value);
	light.style.display = 'none';
	fade.style.display = 'none'
}

/**修改option选项
 传入参数 
  selected 已选择的select对象
 	ifOnCheck 功能是否启用checkbox对象
start_date 启用时间的div name
**/

function editOption(selected, ifOnCheck, start_date) {
	var p1 = selected;
	for ( var i = 0; i < p1.options.length; i++) {
		if (p1.options[i].selected) {
			var tempString = p1[i].text;
			var tempP1value = p1[i].value;
			//取出显示名称中日期前面的部分
			if (tempString.indexOf(SPLIT_CHAR_2) != -1) {
				tempString = tempString.substring(0, tempString
						.indexOf(SPLIT_CHAR_2));
			}
			//取出Value中ID部分
			if (tempP1value.indexOf(SPLIT_CHAR_VALUE) != -1) {
				tempP1value = tempP1value.substring(0, tempP1value
						.indexOf(SPLIT_CHAR_VALUE));
			}

			tempString = tempString.replace(" ", "");
			var newtext = "";
			var newvalue = "";
			//如果是启用 则value =功能编号+*+启用日期
			if (ifOn(ifOnCheck, start_date)) {
				newtext = tempString + SPLIT_CHAR_2 + '启用日期:' + start_date;
				newvalue = tempP1value + SPLIT_CHAR_VALUE + start_date;
			}
			//如果是暂不启用 则value =功能编号
			else {
				newtext = tempString + SPLIT_CHAR_2 + '暂不启用';
				if (p1[i].value.indexOf(SPLIT_CHAR_VALUE) != -1) {
					newvalue = p1[i].value.substring(0, p1[i].value
							.indexOf(SPLIT_CHAR_VALUE));
				} else {
					newvalue = p1[i].value;
				}
			}
			p1.options[i].text = newtext;
			p1.options[i].value = newvalue;
		}
	}
}

/**修改已选择的功能
   传入参数 
   	light 隐藏的弹出层对象
    fade 隐藏的div对象
	date_edit 日期对象
 **/

function edit_selected(light, fade, date_edit) {
	var flag = false;
	var objSelect = oo("targetList2");
	for ( var i = 0; i < objSelect.options.length; i++) {
		if (objSelect.options[i].selected) {
			flag = true;
		}
	}
	if (!flag) {
		Alert("请先选择需要修改的功能选项，可以多选。");
		return;
	}
	light.style.display = 'block';
	fade.style.display = 'block'

	date = new Date();
	var dMonth = date.getMonth() + 1;
	if (dMonth < 10)
		dMonth = "0" + dMonth;
	var vdate = date.getDate();
	if (vdate < 10)
		vdate = "0" + vdate;
	var str = date.getFullYear() + "-" + dMonth + "-" + vdate;
	date_edit.value = str;
}

//空方法
function handler() {
}

/**取消弹出层
 传入参数 light 隐藏的弹出层
          fade 隐藏的div	
 **/
function cancel_layer(light, fade) {
	light.style.display = 'none';
	fade.style.display = 'none';
}

/**移动选择的功能
   传入参数 
    target 要过滤的select对象
    selected 已选择的select对象
	date 启用日期对象
	ifOnCheck 功能是否启用checkbox对象
	start_date 启用时间的div name
 **/

function moveOptions(target, selected, date, ifOnCheck, start_date) {

	for (i = 0; i < target.length; i++)
		if (target[i].selected) {
			isFlag = true;
			for (j = 0; j < selected.length; j++) {
				var p2value = selected[j].value;
				if (p2value.indexOf(SPLIT_CHAR_VALUE) != -1) {
					var _num = p2value.indexOf(SPLIT_CHAR_VALUE);
					p2value = p2value.substring(0, SPLIT_CHAR_VALUE);
				}
				if (p2value == target[i].value) {
					isFlag = false;
					//alert(1);
					break;
				}
			}
			var tempString = target[i].text;
			//if(tempString.indexOf("-")!=-1){
			// tempString=tempString.substring(0,tempString.indexOf("-"));
			//}
			tempString = tempString.replace(" ", "");
			if (isFlag) {
				var newtext = "";
				var newvalue = "";
				//如果是否启用checkbox被选中
				if (ifOn(ifOnCheck, start_date)) {
					newtext = tempString + SPLIT_CHAR_2 + '启用日期:' + date.value;
					newvalue = target[i].value + SPLIT_CHAR_VALUE + date.value;
				}
				//否则
				else {
					newtext = tempString + SPLIT_CHAR_2 + '暂不启用';
					newvalue = target[i].value;
				}
				selected.add(new Option(newtext, newvalue));
			}
		}
	//移除p1内相应的选项
	for (i = target.length - 1; i >= 0; i--)
		if (target[i].selected)
			target.remove(i);
}
/**判断是否选中
      传入参数 
   ifOnCheck 功能是否启用checkbox对象
	start_date 启用时间的div name
 */
function ifOn(ifOnCheck, start_date) {
	if (ifOnCheck.checked == true) {
		if (oo(start_date) != null)
			oo(start_date).style.display = 'block';
		return true;
	} else {
		if (oo(start_date) != null)
			oo(start_date).style.display = 'none';
		return false;
	}
}

/**关闭弹出层  并移动选择的功能
    传入参数 
    target 要过滤的select对象
     selected 已选择的select对象
   	light 隐藏的弹出层对象
     fade 隐藏的div对象
	ifOnCheck 功能是否启用checkbox对象
	date 启用日期对象
	start_date 启用时间的div name
 **/
function close_layer(target, selected, light, fade, ifOnCheck, date, start_date) {
	if (ifOnCheck.checked == true) {
		if (date.value == '') {
			Alert("请填写启用日期");
			return false;
		}
	}
	moveOptions(target, selected, date, ifOnCheck, start_date);
	light.style.display = 'none';
	fade.style.display = 'none'
}

/**打开弹出层
  传入参数 
  target 要过滤的select对象
  light 隐藏的弹出层
  fade 隐藏的div
date 启用日期对象			
 **/
function show_layer(target, light, fade, date_add) {
	var flag = false;
	for ( var i = 0; i < target.options.length; i++) {
		if (target.options[i].selected) {
			flag = true;
		}
	}
	if (!flag) {
		ymPrompt.confirmInfo( {
			title : '提示',
			message : '请先选择要添加的权限选项，可以多选',
			handler : handler
		});
		return;
	}

	light.style.display = 'block';
	fade.style.display = 'block';
	date = new Date();
	var dMonth = date.getMonth() + 1;
	if (dMonth < 10)
		dMonth = "0" + dMonth;

	var vdate = date.getDate();

	if (vdate < 10)
		vdate = "0" + vdate;

	var str = date.getFullYear() + "-" + dMonth + "-" + vdate;
	date_add.value = str;
}

//更换子系统代码后，清空功能列表
function removeOptions(y) {
	var s_value = "";
	if (y == "ok") {
		DWRUtil.removeAllOptions("targetList1");
		DWRUtil.removeAllOptions("targetList2");
	} else {
		for ( var i = 0; i < oo("targetList2").length; i++) {
			s_value = oo("targetList2")[i].value;
			s_value = s_value.substring(0, 3);
		}
		for ( var i = 0; i < oo("sysId").length; i++)
			if (oo("sysId")[i].value == s_value)
				oo("sysId")[i].selected = true;
	}
}

/**移除右侧已有功能列表中已存在功能
  传入参数 selected 已选择的select对象
 **/
function moveBack(selected) {
	var isflag = false;
	for (i = selected.length - 1; i >= 0; i--) {
		if (selected[i].selected) {
			isflag = true;
		}
	}
	if (!isflag) {
		Alert('请先选择要移除的权限选项，可以多选');
		return;
	}
	for (i = selected.length - 1; i >= 0; i--) {
		if (selected[i].selected)
			selected.remove(i);
	}
	initFuncDic(oo("deptList").value);
}

//根据功能类别代码获取功能列表   
function initFuncDic(v) {

	FunctionDic.listFuncByFuncCata(v, handleGetData2);
}

function handleGetData2(list) {

	DWRUtil.removeAllOptions("targetList1");
	DWRUtil.addOptions("targetList1", list, "id", "alias");
	//过滤右侧已有功能列表中已存在功能

	filterExist(oo("targetList1"), oo("targetList2"));
}

/**过滤右侧已有功能列表中已存在功能
    传入参数 target 要过滤的select对象
          selected 已选择的select对象
 **/
function filterExist(target, selected) {
	if (selected == null)
		return;
	var index_arr = "";
	for ( var i = target.length - 1; i >= 0; i--) {
		//循环判断已选中对象
		for ( var j = selected.length - 1; j >= 0; j--) {
			var selectedValue = selected[j].value;
			if (selectedValue.split("*").length > 1) {
				selectedValue = selectedValue.split("*")[0];
			}
			//如果已选中的值等于被选值，删除被选值中此选项
			//alert(selectedValue + "====" + target[i].value)
			if (selectedValue == target[i].value) {
				index_arr += (index_arr == "" ? "" : ",") + i;
			}
		}
	}
	if (index_arr != "") {
		var sp_index = index_arr.split(",");

		for ( var i = 0; i < sp_index.length; i++) {
			target.remove(sp_index[i]);
		}
	}
}

function hiddiv(ddd) {
	var id = ddd;
	document.getElementById(id).style.display = "none";
}
function showdiv(ddd) {
	var id = ddd;
	document.getElementById(id).style.display = "";
	//modify by changming.he 2010-12-14 以下代码无法在firefox浏览器下执行,所以注释掉
	//document.getElementById(id).style.left = window.event.clientX + 15;
	//document.getElementById(id).style.top = window.event.clientY - 30;
}
